物联网系列⑤

您所在的位置:网站首页 esp8266 点灯控制两个灯 物联网系列⑤

物联网系列⑤

2024-06-28 01:47:01| 来源: 网络整理| 查看: 265

物联网系列⑤——基于ESP8266与点灯科技平台的氛围灯设计(接入小爱同学) 一、设计目标二、电路设计三、思路介绍四、ESP8266代码

一、设计目标 使用点灯科技平台接入物联网,可通过手机点灯APP控制氛围灯的开关,该氛围灯拥有一个系统默认颜色,若用户想显示其他颜色可通过手机点灯APP进行设置接入小爱同学,通过语音控制氛围灯的开关通过外接TTL串口下载模块给ESP8266程序烧写,通过跳线帽手动拉低GPIO0电平,手动RST供电使用LM1117 5V转3V设计,可选择使用Mico USB和DC 5.5*2.5mm接口进行5V供电引脚使用通用设计,方便外设扩展LED指示灯指示系统运行状态 二、电路设计

顶视图 底视图

电路板       三个电路板通过铜柱共地并固定,通过一根黑色5V电源线进行板间供电,组成塔式结构。不同层数的电路板执行不同的功能,第一层为点灯科技+小爱对加湿器开关控制。第二层为点灯科技+小爱控制WS2812B灯带。第三层为ESP8266作为网络服务器

三、思路介绍

      WS2812b为3线控制,分别为VCC,Din(控制引脚),GND。数据传输机制为Din数据输入到第一颗RGB光源后,该光源会将数据传输到第二颗,第二颗再将数据传输到第三颗,以此类推来完成数据传输。在arduino IDE中使用Adafruit_NeoPixel库实现对WS2812b的控制。氛围灯系统默认颜色存储于代码中的变量,在使用默认颜色时调用即可。若想让氛围灯显示其他颜色则可以通过点灯APP下发颜色命令来实现,并将该颜色数值存储于临时变量,这意味着只要电路板不断电,灯带就可以自由地在系统默认颜色和我们手动设置的颜色之间进行切换。

四、ESP8266代码 #define BLINKER_PRINT Serial #define BLINKER_WIFI #define BLINKER_MIOT_OUTLET #include #include char auth[] = "**********";//设备号 char ssid[] = "**********";//无线账号 char pswd[] = "**********";//无线密码 int LED_OPEN=0;//氛围灯标志位 int Control_OPEN=0;//氛围灯颜色控制标志位 int count=0;//LED翻转计数器 int send_data=0;//发送命令标志位 uint8_t colorR1 ;//用于颜色存储 uint8_t colorG1 ; uint8_t colorB1 ; uint8_t colorR2 ;//用于颜色存储2 uint8_t colorG2 ; uint8_t colorB2 ; uint8_t colorR_Set= map( 0, 0, 255, 0, 255);//颜色默认值 uint8_t colorG_Set= map(255, 0, 255, 0, 255);//颜色默认值 uint8_t colorB_Set= map(242, 0, 255, 0, 255);;//颜色默认值 #define LED1 16 #define LED2 14 #define PIN D1 #define NUMPIXELS 57 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define RGB_1 "RGBKey" // 新建组件对象 BlinkerButton Button1("LED_Button"); BlinkerButton Button2("Control_Button"); BlinkerRGB RGB1(RGB_1); //APP端颜色设置回调函数 void rgb1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value) { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); BLINKER_LOG("R value: ", r_value); BLINKER_LOG("G value: ", g_value); BLINKER_LOG("B value: ", b_value); BLINKER_LOG("Rrightness value: ", bright_value); uint8_t colorR = map(r_value, 0, 255, 0, bright_value); uint8_t colorG = map(g_value, 0, 255, 0, bright_value); uint8_t colorB = map(b_value, 0, 255, 0, bright_value); colorR2=colorR1 ;//存储 colorG2=colorG1 ; colorB2=colorB1 ; colorR1=colorR ;//存储 colorG1=colorG ; colorB1=colorB ; Button2.print("on"); Control_OPEN=1;//氛围灯颜色调节 send_data=1;//运行标志位为1 } // 按下按键1即会执行该函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); digitalWrite(LED1, !digitalRead(LED1)); if(digitalRead(LED1)==0) { Button1.print("off"); LED_OPEN=0;//关闭 } else { Button1.print("on"); LED_OPEN=1;//开启 } send_data=1;//运行标志位为1 } // 按下按键2即会执行该函数 void button2_callback(const String & state) { BLINKER_LOG("get button state: ", state); digitalWrite(LED2, !digitalRead(LED2)); if(digitalRead(LED2)==0) { Button2.print("off"); Control_OPEN=0;//关闭 } else { Button2.print("on"); Control_OPEN=1;//开启 } send_data=1;//运行标志位为1 } // 如果未绑定的组件被触发,则会执行其中内容 void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); } //小爱同学处理函数 void miotPowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { digitalWrite(LED2, HIGH); LED_OPEN=1; BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); send_data=1;//运行标志位为1 } else if (state == BLINKER_CMD_OFF) { digitalWrite(LED2, LOW); LED_OPEN=0; BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); send_data=1;//运行标志位为1 } } void setup() { // 初始化串口 Serial.begin(115200); #if defined(BLINKER_PRINT) BLINKER_DEBUG.stream(BLINKER_PRINT); #endif // 初始化有LED的IO pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); pinMode(LED1, OUTPUT); digitalWrite(LED1, LOW); pinMode(LED2, OUTPUT); digitalWrite(LED2, LOW); // 初始化blinker Blinker.begin(auth, ssid, pswd); pixels.begin(); Blinker.attachData(dataRead); Button1.attach(button1_callback);//按键1 Button2.attach(button2_callback);//按键2 RGB1.attach(rgb1_callback); //小爱回调函数 BlinkerMIOT.attachPowerState(miotPowerState); } void loop() { Blinker.run(); count++;//led计数器 if(send_data==1)//运行标志位为1 { if(LED_OPEN==1 )//开启 { if(Control_OPEN==1)//控制开启 { // int r1=colorR2,g1=colorG2,b1=colorB2; for(int n = 0; n < NUMPIXELS; n++){ pixels.setPixelColor(n, pixels.Color(colorR1,colorG1,colorB1)); pixels.show(); } } else { int r=0,g=0,b=0; for(int i = 0; i < NUMPIXELS; i++){ pixels.setPixelColor(i, pixels.Color(colorR_Set,colorG_Set,colorB_Set)); pixels.show(); } } } else if (LED_OPEN==0)//关闭 { uint8_t colorR = map(0, 0, 255, 0, 0); uint8_t colorG = map(0, 0, 255, 0, 0); uint8_t colorB = map(0, 0, 255, 0, 0); for(int i = 0; i < NUMPIXELS; i++){ pixels.setPixelColor(i, pixels.Color(colorR,colorG,colorB)); pixels.show(); } } send_data=0;//运行标志位清0 } else { send_data=0;//运行标志位为0 } if(count==100) { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); count=0; } }

点灯APP

      不足之处还望各位大佬不吝赐教!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭